package com.leetcode.Offer;

public class JZ18 {
    public ListNode deleteNode(ListNode head, int val) {

        //思路：找到要删除的节点，把下一个节点的值覆盖到当前节点，然后删除下一个节点
        //思路2：一前一后两个指针，前一个指针指到要删除节点时后一个节点跳过前一个节点

        //判定指针是否在尾部，或者头部

        if (head == null) {
            return null;
        }

        ListNode p = head;

        if (p.val == val) {//如果是头节点则返回下一个节点
            return head.next;
        }
        p = p.next;
        ListNode back = head;
        while (p != null) {
            if (p.val == val) {
                break;
            }
            p = p.next;
            back = back.next;
        }

        if (p.next != null) {//不是尾节点
            p.val = p.next.val;
            p.next = p.next.next;
        } else {//是尾节点
            back.next = null;
        }
        return head;
    }
}
